package com.demo.memory;

import org.apache.lucene.util.RamUsageEstimator;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class SizeTool {

	@Test
	public void test() {
		Map map = new HashMap(16);

		for (int i = 0; i < 10000; i++) {
			String uuid = UUID.randomUUID().toString().replace("-", "");
			map.put(uuid, uuid);
		}

		//计算指定对象本身在堆空间的大小，单位字节
		long l1 = RamUsageEstimator.shallowSizeOf(map);

		//计算指定对象及其引用树上的所有对象的综合大小，单位字节
		long l = RamUsageEstimator.sizeOf(map);

		//计算指定对象及其引用树上的所有对象的综合大小，返回可读的结果，如：2KB
		String s = RamUsageEstimator.humanSizeOf(map);

		System.out.println(l);
		System.out.println(l1);
		System.out.println(s);
	}

}
